package com.sinogrand.elevator.network

import com.sinogrand.elevator.data.models.ApiResponse
import com.sinogrand.elevator.data.models.LoginResponse
import com.sinogrand.elevator.data.models.ElevatorListResponse
import com.sinogrand.elevator.data.models.ProjectDetailData
import com.sinogrand.elevator.data.models.ProjectListResponse
import com.sinogrand.elevator.data.models.HomeElevatorListResponse
import com.sinogrand.elevator.data.models.TodoListResponse
import com.sinogrand.elevator.data.models.ProjectUserListResponse
import com.sinogrand.elevator.data.models.ElevatorDetailData
import com.sinogrand.elevator.data.models.ElevatorLogListResponse
import com.sinogrand.elevator.data.models.MyApprovalListResponse
import com.sinogrand.elevator.data.models.ProfileInfoResponse
import com.sinogrand.elevator.data.models.ApprovalRecordListResponse
import retrofit2.http.Body
import retrofit2.http.POST
import com.google.gson.JsonObject

/**
 * API服务接口
 */
interface ApiService {
    
    /**
     * 密码登录
     */
    @POST("/api/auth/login/password")
    suspend fun login(@Body request: JsonObject): ApiResponse<LoginResponse>
    
    /**
     * 获取电梯列表
     */
    @POST("/api/elevator/list")
    suspend fun getElevatorList(@Body request: JsonObject): ApiResponse<ElevatorListResponse>
    
    /**
     * 获取项目电梯列表
     */
    @POST("/api/elevator/list")
    suspend fun getProjectElevatorList(@Body request: JsonObject): ApiResponse<ElevatorListResponse>
    
    /**
     * 获取项目列表
     */
    @POST("/api/project/list")
    suspend fun getProjectList(@Body request: JsonObject): ApiResponse<ProjectListResponse>

    /**
     * 获取项目详情
     */
    @POST("/api/project/info")
    suspend fun getProjectInfo(@Body request: JsonObject): ApiResponse<ProjectDetailData>

    /**
     * 获取电梯详情
     */
    @POST("/api/elevator/info")
    suspend fun getElevatorInfo(@Body request: JsonObject): ApiResponse<ElevatorDetailData>
    
    /**
     * 获取首页急需维保电梯列表
     */
    @POST("/api/home/elevator-list")
    suspend fun getHomeElevatorList(@Body request: JsonObject): ApiResponse<HomeElevatorListResponse>

    /**
     * 获取待办列表
     */
    @POST("/api/home/todo-list")
    suspend fun getTodoList(@Body request: JsonObject): ApiResponse<TodoListResponse>
    
    /**
     * 获取项目用户列表
     */
    @POST("/api/project-user/list")
    suspend fun getProjectUserList(@Body request: JsonObject): ApiResponse<ProjectUserListResponse>
    
    /**
     * 获取电梯日志列表
     */
    @POST("/api/elevator/log-list")
    suspend fun getElevatorLogList(@Body request: JsonObject): ApiResponse<ElevatorLogListResponse>
    
    /**
     * 获取我的审批列表
     */
    @POST("/api/approval/my-list")
    suspend fun getMyApprovalList(@Body request: JsonObject): ApiResponse<MyApprovalListResponse>
    
    /**
     * 获取个人信息
     */
    @POST("/api/profile/info")
    suspend fun getProfileInfo(@Body request: JsonObject): ApiResponse<ProfileInfoResponse>
    
    /**
     * 获取审批记录列表
     */
    @POST("/api/approval-record/list")
    suspend fun getApprovalRecordList(@Body request: JsonObject): ApiResponse<ApprovalRecordListResponse>
}
